/**
 * @Copyright ®2015 Sinosoft Co. Ltd. All rights reserved.<br/>
 * 项目名称 : 电子商务云服务平台
 * 创建日期 : 2016年6月28日
 * 修改历史 : 
 *     1. [2016年7月15日]修改文件 by lijialun
 * 添加Javadoc注释，更新代码规范，静态工具类增加private构造函数
 */
package com.gavinwind.inspay.common.web.listener;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.context.ContextLoader;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Properties;

/**  
 * 【类或接口功能描述】
 * @author Mr.li
 * @date 2016年7月15日 上午11:32:05 
 * @version V1.0  
*/
public class ContextLoaderListener implements ServletContextListener {

    /** 
    * @Fields Logger : LOGGER
    */
    private static final Log LOGGER = LogFactory.getLog(ContextLoaderListener.class);

    /** 
    * @Fields contextLoader : TODO
    */
    private ContextLoader contextLoader;

    /**
     * 
     */
    public ContextLoaderListener() {}

    protected ContextLoader createContextLoader() {
        return new ContextLoader();
    }

    public ContextLoader getContextLoader() {
        return contextLoader;
    }

    /** 
     * 方法功能描述
     * @param cEvent
     * @see javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.ServletContextEvent) 
    */
    public void contextDestroyed(ServletContextEvent cEvent) {
        if (contextLoader != null)
            contextLoader.closeWebApplicationContext(cEvent.getServletContext());
    }

    /*
     * 需要在配置目录添加systemConfig.properties文件
     */
    @Override
    public void contextInitialized(ServletContextEvent    cEvent) {
        Properties tProps = new Properties();
        InputStream tInputStream = null;
        String tSystemName = "";
        String tVersionNo = "";
        String tWebSite = "";
        String tProjectName = cEvent.getServletContext().getInitParameter("project-name");
        LOGGER.info(tProjectName);
        try {
            tInputStream = getClass().getResourceAsStream("/config/" + tProjectName + "/systemConfig.properties");
            tProps.load(new InputStreamReader(tInputStream, "UTF-8"));
            tSystemName = (String) tProps.get("system_name");
            tVersionNo = (String) tProps.get("version_no");
            tWebSite = (String) tProps.get("web_site");
        } catch (IOException ex) {
            ex.printStackTrace();
            LOGGER.error(ex);
        }
        LOGGER.info("*****************************************************************************************");
        LOGGER.info("                                      " + tSystemName + "                             版本：" + tVersionNo);
        LOGGER.info("                                                                                         ");
        LOGGER.info("                      " + tWebSite + "                                            ");
        LOGGER.info("*****************************************************************************************");
        contextLoader = createContextLoader();
        contextLoader.initWebApplicationContext(cEvent.getServletContext());
    }

}